from flask_restful import Resource
from flask import request, current_app
from app.services.ai_service import AIService
from app.services.civil_code_service import CivilCodeService
from app import create_response

class SearchSuggestionsResource(Resource):
    def get(self):
        """
        获取AI智能搜索建议（v1.7增强版）
        
        支持两种模式：
        1. 带query参数：返回AI生成的智能建议（新版）
        2. 无query参数：返回热门标签（兼容旧版）
        
        Query Parameters:
            query (str, optional): 用户输入的搜索词
            
        Returns:
            v1.7格式：包含7种类型、丰富元数据的建议列表
            或兼容格式：热门标签列表
        """
        try:
            query = request.args.get('query', '').strip()
            
            # 如果有query参数，使用新版AI增强建议
            if query:
                current_app.logger.info(f"🎯 [增强建议API] 收到查询: {query}")
                
                # 调用增强版AI服务
                ai_service = AIService()
                result = ai_service.get_search_suggestions_enhanced(query)
                
                return create_response(
                    success=True,
                    data=result,
                    message="搜索建议生成成功"
                )
            
            # 无query参数，返回兼容旧版的热门标签
            else:
                current_app.logger.info("📋 [兼容模式] 返回热门标签")
                service = CivilCodeService()
                
                # 基于统计信息生成关键词
                stats = service.get_statistics()
                articles_by_part = stats.get('articles_by_part', {})
                
                # 优先级关键词（基于编章和搜索测试）
                search_suggestions = ['合同', '物权', '婚姻', '继承', '人格权', '侵权']
                
                # 热门搜索标签（包含计数信息）
                popular_tags = [
                    {'keyword': '合同', 'count': '526', 'trending': True},
                    {'keyword': '物权', 'count': '258', 'trending': True}, 
                    {'keyword': '婚姻', 'count': '79', 'trending': True},
                    {'keyword': '继承', 'count': '40', 'trending': False},
                    {'keyword': '人格权', 'count': '51', 'trending': False},
                    {'keyword': '侵权', 'count': '100', 'trending': False}
                ]
                
                # 使用真实的法条数量作为计数
                for tag in popular_tags:
                    keyword = tag['keyword']
                    for part, count in articles_by_part.items():
                        if keyword in part:
                            tag['count'] = str(count)
                            break
                
                data = {
                    'search_suggestions': search_suggestions,
                    'popular_tags': popular_tags,
                    'last_updated': stats.get('last_updated')
                }
                
                return create_response(
                    success=True, 
                    data=data, 
                    message="获取搜索建议成功"
                )
            
        except Exception as e:
            current_app.logger.error(f"搜索建议API失败: {str(e)}", exc_info=True)
            return create_response(
                success=False,
                error={
                    'code': 'SUGGESTIONS_FAILED',
                    'message': '搜索建议生成失败',
                    'details': str(e) if current_app.debug else '服务器内部错误'
                },
                status_code=500
            )
